h5ai Docker mit PHP-Fix: Schnelles Update gegen die PHP2Shell-Lücke

Normalerweise gibt es auf meinem Blog nur einen Artikel pro Woche am Mittwochmittag – aber wenn die Hütte brennt, schiebe ich heute direkt noch einen dritten Beitrag hinterher! Nachdem ich eben schon das Webtrees-Image fit gemacht habe, war direkt das nächste Sorgenkind an der Reihe.

Wer wie ich ein eigenes Download-Portal mit h5ai in Docker betreibt, stand heute vor derselben Herausforderung: Die kritische Sicherheitslücke in PHP (PHP2Shell bzw. CVE-2026-109618) verlangte ein sofortiges PHP Update für alle öffentlich erreichbaren Webdienste. Doch genau wie bei Webtrees gab es ein vertrautes Problem: Das meistgenutzte Community-Image von awesometic hatte schon länger kein Update mehr erhalten und lief noch auf ungepatchtem PHP 8.2.

Der anfangs diskutierte Workaround über temporäre Direktiven in der php.ini wurde von Heise und Sicherheitsforschern rasch als unvollständig eingestuft. Ein wirksamer Schutz ist erst mit den frisch gepatchten PHP-Versionen (wie PHP 8.4.26) gegeben. Weil ich mein eigenes Download-Portal (dl.techniverse.net) nicht ungeschützt im Netz lassen und auch nicht wochenlang abschalten wollte, habe ich mir das Dockerfile vorgenommen und ein eigenes, modernes Image auf Basis von Alpine Linux, aktuellem Nginx und der fehlerbereinigten Version PHP 8.4.26 gebaut.

Das fertige Container-Image habe ich auf meiner Gitea-Registry für die Community veröffentlicht. In diesem Beitrag zeige ich dir, wie du dein h5ai-Setup mit wenigen Zeilen in Docker Compose auf den aktuellen, sicheren Stand bringst.

🧩 Voraussetzungen

Bevor es losgeht, brauchst du natürlich eine funktionierende Docker-Umgebung.
Wenn du Docker noch nicht installiert hast, findest du hier eine Schritt-für-Schritt-Anleitung, wie du das auf Ubuntu mit einem Script erledigst:

Sobald Docker und Docker Compose bei dir laufen, können wir direkt loslegen.

📦 Das gepatchte h5ai Docker Image

Das Image baut auf dem bewährten Funktionsumfang von h5ai 0.30.0 auf, bringt jedoch moderne Unterbauten mit:

  • Webserver & PHP: Schlankes Nginx mit PHP 8.4.26 FPM auf Alpine Linux.
  • Erweiterungen: Volle Unterstützung für Thumbnails, Bildbearbeitung und Archivierung via imagemagick, ffmpeg, gd, zip und imagick.
  • Image-Tags: git.techniverse.net/scriptos/h5ai-docker:0.30.0-php8.4.26 (bzw. latest-php8.4.26).
  • Quellcode & Lizenz: Vollständig Open Source auf Gitea unter der MIT-Lizenz.

🔄 h5ai Docker Setup mit PHP-Fix updaten oder neu aufsetzen

Die Inbetriebnahme ist denkbar einfach. In deiner docker-compose.yaml musst du im Wesentlichen nur das Image austauschen und deine Verzeichnisse für die freizugebenden Dateien mounten.

Hier siehst du eine saubere, praxiserprobte Compose-Konfiguration inklusive eigenem, isolierten Docker-Netzwerk und fester IP-Adresse:

services:
  h5ai:
    image: git.techniverse.net/scriptos/h5ai-docker:0.30.0-php8.4.26
    container_name: h5ai-download
    hostname: h5ai-download
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./data/shared:/h5ai
      - ./data/config:/config
    networks:
      h5ai_net:
        ipv4_address: 172.19.10.10
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Berlin

networks:
  h5ai_net:
    name: h5ai.dockernetwork.local
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.10.0/24
          gateway: 172.19.10.1
          ip_range: 172.19.10.128/25

Container aktualisieren und starten

Wenn du ein bestehendes Setup aktualisierst, ziehst du das neue Image einfach herunter und startest den Container neu:

# Neues Image herunterladen
docker compose pull

# Container im Hintergrund neu starten
docker compose up -d

Docker tauscht den alten Container aus, übernimmt deine bestehende Verzeichnisstruktur in ./data/shared und bootet die neue PHP 8.4-Laufzeitumgebung in wenigen Sekunden.

🔍 PHP-Version im Header oder Browser überprüfen

Ob dein Download-Portal tatsächlich mit der gepatchten Version antwortet, lässt sich ganz einfach über das Terminal mit einem schnellen HTTP-Header-Check verifizieren:

curl -IL https://dein-download-portal.de/

In der Antwort siehst du direkt die Bestätigung im Header: X-Powered-By: PHP/8.4.26. Damit bist du auf der sicheren Seite.

✅ Fazit

Alte, ungepflegte Container-Images sind ein beliebtes Einfallstor für Sicherheitslücken wie PHP2Shell. Besonders bei simplen Utilities wie Web-Dateibrowsern, die oft monatelang geräuschlos im Hintergrund laufen, geraten Updates leicht in Vergessenheit.

Mit dem frisch gepatchten Image läuft h5ai wieder sicher, modern und mit aktueller PHP 8.4-Performance. Wenn du das Image ebenfalls nutzen möchtest, bediene dich gern frei im Techniverse Gitea-Repository!

👥 Techniverse Community

Lust auf Austausch rund um Docker, Selfhosting und andere smarte IT-Lösungen?
In der Techniverse Community triffst du Gleichgesinnte, kannst Fragen stellen oder einfach nerdigen Talk genießen. 🚀

👉 Jetzt der Gruppe auf Matrix beitreten
~ Direkte Raumadresse: #community:techniverse.net

👉 Für lockere Gespräche abseits der Kernthemen komm in den Talkraum
~ Direkte Raumadresse: #talk:techniverse.net

Wir freuen uns, wenn du dabei bist!

Vielen Dank fürs Teilen!